ActiveRecord 基础

概述

ActiveRecord 是 Ruby on Rails 框架中的一个核心组件,它提供了一种对象关系映射(ORM)技术,使得开发者可以通过 Ruby 对象来操作数据库。ActiveRecord 简化了数据库操作,使得开发者可以专注于业务逻辑而非 SQL 语句。

1. ActiveRecord 简介

1.1 什么是 ActiveRecord?

ActiveRecord 是一种设计模式,它将数据库表中的每一行映射为一个对象,使得开发者可以通过操作对象来间接操作数据库。在 Ruby on Rails 中,ActiveRecord 是一个实现了这种模式的库。

1.2 为什么使用 ActiveRecord?

  • 简化数据库操作:开发者无需编写复杂的 SQL 语句,可以通过 Ruby 方法来完成数据库操作。
  • 提高开发效率:ActiveRecord 提供了丰富的 API,使得数据库操作更加直观和高效。
  • 跨数据库支持:ActiveRecord 支持多种数据库,如 MySQL、PostgreSQL、SQLite 等。

2. 安装和配置

2.1 安装 Ruby on Rails

首先,确保你已经安装了 Ruby 和 Ruby on Rails。如果你还没有安装,可以通过以下命令安装:

gem install rails

2.2 创建 Rails 项目

使用 Rails 命令创建一个新的项目:

rails new my_app
cd my_app

2.3 配置数据库

在 config/database.yml 文件中配置你的数据库连接信息。例如,如果你使用 SQLite:

default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

3. 创建模型

3.1 生成模型

使用 Rails 的生成器来创建一个模型:

rails generate model User name:string email:string

这会生成一个 User 模型,并创建相应的数据库表。

3.2 迁移数据库

运行迁移命令来创建数据库表:

rails db:migrate

3.3 模型文件

生成的模型文件位于 app/models/user.rb:

class User < ApplicationRecord
end

4. 基本操作

4.1 创建记录

使用 create 方法创建一条记录:

user = User.create(name: "John Doe", email: "[email protected]")

4.2 查询记录

使用 find 方法查询记录:

user = User.find(1)

使用 where 方法进行条件查询:

users = User.where(name: "John Doe")

4.3 更新记录

使用 update 方法更新记录:

user = User.find(1)
user.update(name: "Jane Doe")

4.4 删除记录

使用 destroy 方法删除记录:

user = User.find(1)
user.destroy

5. 实践练习

5.1 创建一个博客应用

  1. 创建一个新的 Rails 项目:

    rails new blog
    cd blog
    
  2. 生成 Post 模型:

    rails generate model Post title:string content:text
    rails db:migrate
    
  3. 在 app/controllers/posts_controller.rb 中创建控制器:

    class PostsController < ApplicationController
      def index
        @posts = Post.all
      end
    
      def show
        @post = Post.find(params[:id])
      end
    
      def new
        @post = Post.new
      end
    
      def create
        @post = Post.new(post_params)
        if @post.save
          redirect_to @post
        else
          render :new
        end
      end
    
      private
    
      def post_params
        params.require(:post).permit(:title, :content)
      end
    end
    
  4. 创建视图文件 app/views/posts/index.html.erb:

    <h1>Posts</h1>
    <ul>
      <% @posts.each do |post| %>
        <li><%= link_to post.title, post %></li>
      <% end %>
    </ul>
    
  5. 创建视图文件 app/views/posts/show.html.erb:

    <h1><%= @post.title %></h1>
    <p><%= @post.content %></p>
    
  6. 创建视图文件 app/views/posts/new.html.erb:

    <h1>New Post</h1>
    <%= form_with model: @post, local: true do |form| %>
      <div>
        <%= form.label :title %>
        <%= form.text_field :title %>
      </div>
      <div>
        <%= form.label :content %>
        <%= form.text_area :content %>
      </div>
      <div>
        <%= form.submit %>
      </div>
    <% end %>
    
  7. 在 config/routes.rb 中配置路由:

    Rails.application.routes.draw do
      resources :posts
    end
    
  8. 启动 Rails 服务器:

    rails server
    
  9. 访问 http://localhost:3000/posts 查看你的博客应用。

6. 总结

通过本教程,你已经学习了 ActiveRecord 的基础知识,包括模型的创建、数据库操作、以及如何在 Rails 应用中使用 ActiveRecord。ActiveRecord 是 Rails 开发的核心组件之一,掌握它将大大提高你的开发效率。

7. 进一步学习

  • ActiveRecord 查询接口:深入学习 where、order、limit 等查询方法。
  • 数据库迁移:了解如何使用迁移文件来管理数据库结构。
  • 关联关系:学习如何在模型之间建立关联,如 has_many、belongs_to 等。

继续探索 ActiveRecord 的更多功能,你将能够构建更加复杂和强大的 Rails 应用。